home *** CD-ROM | disk | FTP | other *** search
- {
- (* NOTE *)
- Dice Object was created by Todd A. Jacobs and is hereby released
- into the public domain. Long live SWAG!
-
- This unit is intended as a stand-alone object. The idea was to
- create a reusable object for dice games, such that types for 2d6,
- 2d10, 1d20, etc. (you role-playing gamers know what I mean) wouldn't
- have to be created for each dice type.
-
- The following sample code shows it's usage by writing a screenful of
- random dice rolls:
-
- program DiceDemo;
-
- uses Dice;
-
- var
- d6: TDice;
- i: byte;
-
- begin
- randomize;
- d6.init (3, 6);
- for i := 1 to 23 do
- writeln (d6.roll);
- d6.done;
- readln;
- end. (*DiceDemo*)
-
- No, it didn't have to be an object, but that's what I wanted to do.
- Use it any way you like. =)
-
- If you have any improvements to offer, please submit them to SWAG.
- Thanks!
- }
-
- Unit
- Dice;
-
- interface
-
- type
- TDice = object
- NumDice: byte;
- Sides: byte;
- constructor Init (iDice, iSides: byte);
- function Roll: word; virtual;
- destructor Done; virtual;
- end; {type definition of TDice}
-
- implementation
-
- constructor TDice.Init;
- begin
- NumDice := iDice;
- Sides := iSides;
- end;
-
- function TDice.Roll;
- var
- iLoopCounter: byte;
- CurrValue: word;
- begin
- CurrValue := 0;
- while iLoopCounter < NumDice do begin
- CurrValue := CurrValue + Random (Sides) + 1;
- inc (iLoopCounter);
- end; {while iLoopCounter}
- Roll := CurrValue;
- end; {function Roll}
-
- destructor TDice.Done;
- begin
- end;
-
- end. {Unit Dice}